﻿#ifndef CLAIM_H
#define CLAIM_H

#include<QString>
#include<QStringList>

namespace claim{
    class Claim;
}

// claim type, only product or process
enum claim_type{
    productTheme = 1,
    processTheme
};


QString parseTechTheme(QString);
QStringList parseSensitiveWords(QString);
enum claim_type parseClaimType(QString);

class Claim;

class Claim
{
public:


    // copy constructor
    Claim(const Claim& otherClaim){
        this->text = otherClaim.text;
        this->techTheme = otherClaim.techTheme;
        this->sensitiveWords = otherClaim.sensitiveWords;
        this->claimType = otherClaim.claimType;
    }

    Claim(QString);
    Claim();

    QString getText(){
        return this->text;
    }
    QString getTechTheme(){
        return this->techTheme;
    }
    bool hasSensitiveWords();
    QStringList getSensitiveWords();
    enum claim_type getClaimType(){
        return this->claimType;
    }
    bool isIndependentClaim();
    Claim* getDependentClaim();

private:
    QString text;
    QString techTheme;
    QStringList sensitiveWords;
    enum claim_type claimType;
    Claim* dependentClaim;
};

#endif // CLAIM_H
